Contribuições da Campanha Presidencial America em 2016, estado do TX por Daniel Teobaldo

Introdução

Para este projeto escolhi uma das bases de dados sugeridas pela Udacity: Financiamento da Campanha Presidencial dos EUA de 2016.

A idéia inicial era de se fazer a analise do estado dde NY, no entanto havia uma discrepancia muito grande nas contibuições uma vez que o comite “HILLARY VICTORY FUND” teve quase metade (47%) do valor de contribuições referentes a este estado em apenas 23 contribuições das 649.460 contribuições registradas, todas acima de U$ 100.000. A maior contribuição abaixo deste valor de U$ 100.000 foi de U$ 11.816,25. A remoção dos outliers traria um dataset que não representaria o conjunto de dados do estado.

## Warning in scan(file = file, what = what, sep = sep, quote = quote, dec =
## dec, : EOF within quoted string
## Warning: Column `cmte_id` joining character vector and factor, coercing
## into character vector
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##   -10100       15       27      264      100 12777706
##  [1] "HILLARY VICTORY FUND - UNITEMIZED"
##  [2] "HILLARY VICTORY FUND - UNITEMIZED"
##  [3] "HILLARY VICTORY FUND - UNITEMIZED"
##  [4] "HILLARY VICTORY FUND - UNITEMIZED"
##  [5] "HILLARY VICTORY FUND - UNITEMIZED"
##  [6] "HILLARY VICTORY FUND - UNITEMIZED"
##  [7] "HILLARY VICTORY FUND - UNITEMIZED"
##  [8] "HILLARY VICTORY FUND - UNITEMIZED"
##  [9] "HILLARY VICTORY FUND - UNITEMIZED"
## [10] "HILLARY VICTORY FUND - UNITEMIZED"
## [11] "HILLARY VICTORY FUND - UNITEMIZED"
## [12] "HILLARY VICTORY FUND - UNITEMIZED"
## [13] "HILLARY VICTORY FUND - UNITEMIZED"
## [14] "HILLARY VICTORY FUND - UNITEMIZED"
## [15] "HILLARY VICTORY FUND - UNITEMIZED"
## [16] "HILLARY VICTORY FUND - UNITEMIZED"
## [17] "HILLARY VICTORY FUND - UNITEMIZED"
## [18] "HILLARY VICTORY FUND - UNITEMIZED"
## [19] "HILLARY VICTORY FUND - UNITEMIZED"
## [20] "HILLARY VICTORY FUND - UNITEMIZED"
## [21] "HILLARY VICTORY FUND - UNITEMIZED"
## [22] "HILLARY VICTORY FUND - UNITEMIZED"
## [23] "HILLARY VICTORY FUND - UNITEMIZED"
## [1] 11816.25
## [1] 80675920
## [1] 17879674436
## # A tibble: 1 x 1
##       n
##   <int>
## 1    23

## [1] 80675920
## [1] 98120824

Esta discrepancia traria um prejuizo na avaliação das contribuições entre os candidatos e restringiria as analises dos dados. Desta forma optei por fazer a analise das contribuições feitas pelos eleitores do estado do TX, que traz uma distribuição mais homogenea nas contribuições.

USACampaign <- read.csv('P00000001-TX.csv', header = T, as.is = T)

# Verifica quantidade de registros com valores de contribuição negativa
dim(USACampaign[USACampaign$contb_receipt_amt < 0,])
## [1] 12084    19
# Verifica quantidade de registros com valores de contribuição igual a 0 (zero)
dim(USACampaign[USACampaign$contb_receipt_amt == 0,])
## [1] 24 19
# Verifica a existencia de regitro diferentes para a mesma cidade, escritas de formas diferentes
table(USACampaign[substr(USACampaign$contbr_city, 1, 4) == "DALL",]$contbr_city)
## 
##        DALLA       DALLAA       DALLAD      DALLALS       DALLAS 
##            1            1            4            1        40656 
## DALLAS TEXAS    DALLAS TX      DALLAS,   DALLAS, TX      DALLAS9 
##            2            1            1            1            1 
##     DALLASTX      DALLASV      DALLLAS 
##            1            2            1

Algumas verificações simples nesta base de dados nos aponta necessidade de tratamento das informações. Este tratamento será feito em um script a parte, em python (tratarDados.py). Maiores detalhes sobre este tratamentos pode ser visualizado no arquivo Tratamento de dados.md.

## [1] 16600
##         Min.      1st Qu.       Median         Mean      3rd Qu. 
## "2013-10-21" "2016-02-06" "2016-04-29" "2016-04-27" "2016-08-12" 
##         Max. 
## "2016-12-31"
## [1] 548396     29
##  [1] "cmte_id"                "cand_id"               
##  [3] "cand_nm"                "contbr_nm"             
##  [5] "contbr_city"            "contbr_st"             
##  [7] "contbr_zip"             "contbr_employer"       
##  [9] "contbr_occupation"      "contb_receipt_amt"     
## [11] "contb_receipt_dt"       "receipt_desc"          
## [13] "memo_cd"                "memo_text"             
## [15] "form_tp"                "file_num"              
## [17] "tran_id"                "election_tp"           
## [19] "X"                      "city"                  
## [21] "lon"                    "lat"                   
## [23] "party"                  "cmte_nm"               
## [25] "cmte_dsgn"              "contb_receipt_dt_day"  
## [27] "contb_receipt_dt_month" "contb_receipt_dt_year" 
## [29] "contb_receipt_date"
## 'data.frame':    548396 obs. of  29 variables:
##  $ cmte_id               : Factor w/ 26 levels "C00458844","C00496034",..: 7 16 16 8 7 7 16 16 7 16 ...
##  $ cand_id               : Factor w/ 25 levels "P00003392","P20002671",..: 1 23 23 12 1 1 23 23 1 23 ...
##  $ cand_nm               : Factor w/ 25 levels "Bush, Jeb","Carson, Benjamin S.",..: 4 23 23 20 4 4 23 23 4 23 ...
##  $ contbr_nm             : chr  "MILLARD, SUSAN C." "SELLERS, CHRISTINE" "SELLERS, DAVID" "LEONE, MICHELLE" ...
##  $ contbr_city           : chr  "CORPUS CHRISTI" "FORT WORTH" "WILLIS" "NORTH RICHLAND HILLS" ...
##  $ contbr_st             : chr  "TX" "TX" "TX" "TX" ...
##  $ contbr_zip            : chr  "784112213" "76108" "77318" "761826749" ...
##  $ contbr_employer       : chr  "N/A" "BAYLOR HEALTHCARE SYSTEM" "RETIRED" "NOT EMPLOYED" ...
##  $ contbr_occupation     : chr  "RETIRED" "REGISTERED NURSE" "RETIRED" "NOT EMPLOYED" ...
##  $ contb_receipt_amt     : num  37.1 127.1 80 15 50 ...
##  $ contb_receipt_dt      : chr  "16-APR-16" "28-SEP-16" "01-DEC-16" "06-MAR-16" ...
##  $ receipt_desc          : chr  "" "" "" "" ...
##  $ memo_cd               : chr  "X" "X" "X" "" ...
##  $ memo_text             : chr  "* HILLARY VICTORY FUND" "" "" "* EARMARKED CONTRIBUTION: SEE BELOW" ...
##  $ form_tp               : chr  "SA18" "SA18" "SA18" "SA17A" ...
##  $ file_num              : int  1091718 1146165 1146165 1077404 1091718 1091718 1146165 1146165 1091718 1146165 ...
##  $ tran_id               : chr  "C4725643" "SA18.90357" "SA18.120784" "VPF7BKZGYE4" ...
##  $ election_tp           : chr  "P2016" "G2016" "G2016" "P2016" ...
##  $ X                     : logi  NA NA NA NA NA NA ...
##  $ city                  : chr  "CORPUS CHRISTI" "FORT WORTH" "WILLIS" "NORTH RICHLAND HILLS" ...
##  $ lon                   : num  -97.4 -97.3 -95.5 -97.2 -98.5 ...
##  $ lat                   : num  27.8 32.8 30.4 32.9 29.4 ...
##  $ party                 : chr  "DEM" "REP" "REP" "DEM" ...
##  $ cmte_nm               : chr  "HILLARY FOR AMERICA" "DONALD J. TRUMP FOR PRESIDENT, INC." "DONALD J. TRUMP FOR PRESIDENT, INC." "BERNIE 2016" ...
##  $ cmte_dsgn             : chr  "P" "P" "P" "P" ...
##  $ contb_receipt_dt_day  : int  16 28 1 6 9 4 29 30 21 4 ...
##  $ contb_receipt_dt_month: Ord.factor w/ 12 levels "JAN"<"FEB"<"MAR"<..: 4 9 12 3 4 4 11 11 4 10 ...
##  $ contb_receipt_dt_year : int  16 16 16 16 16 16 16 16 16 16 ...
##  $ contb_receipt_date    : Date, format: "2016-04-16" "2016-09-28" ...
##       cmte_id            cand_id                            cand_nm      
##  C00575795:203942   P00003392:203942   Clinton, Hillary Rodham  :203942  
##  C00574624:138805   P60006111:138805   Cruz, Rafael Edward 'Ted':138805  
##  C00577130: 79955   P60007168: 79955   Sanders, Bernard         : 79955  
##  C00580100: 77920   P80001571: 77920   Trump, Donald J.         : 77920  
##  C00573519: 23694   P60005915: 23694   Carson, Benjamin S.      : 23694  
##  C00458844:  8984   P60006723:  8984   Rubio, Marco             :  8984  
##  (Other)  : 15096   (Other)  : 15096   (Other)                  : 15096  
##   contbr_nm         contbr_city         contbr_st        
##  Length:548396      Length:548396      Length:548396     
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##                                                          
##   contbr_zip        contbr_employer    contbr_occupation 
##  Length:548396      Length:548396      Length:548396     
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##                                                          
##  contb_receipt_amt contb_receipt_dt   receipt_desc      
##  Min.   :    0     Length:548396      Length:548396     
##  1st Qu.:   25     Class :character   Class :character  
##  Median :   40     Mode  :character   Mode  :character  
##  Mean   :  175                                          
##  3rd Qu.:  100                                          
##  Max.   :16600                                          
##                                                         
##    memo_cd           memo_text           form_tp         
##  Length:548396      Length:548396      Length:548396     
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##                                                          
##     file_num         tran_id          election_tp           X          
##  Min.   :1003942   Length:548396      Length:548396      Mode:logical  
##  1st Qu.:1077404   Class :character   Class :character   NA's:548396   
##  Median :1096256   Mode  :character   Mode  :character                 
##  Mean   :1097492                                                       
##  3rd Qu.:1133832                                                       
##  Max.   :1146285                                                       
##                                                                        
##      city                lon               lat           party          
##  Length:548396      Min.   :-124.03   Min.   :24.66   Length:548396     
##  Class :character   1st Qu.: -97.74   1st Qu.:29.76   Class :character  
##  Mode  :character   Median : -96.93   Median :30.26   Mode  :character  
##                     Mean   : -97.11   Mean   :30.99                     
##                     3rd Qu.: -95.47   3rd Qu.:32.76                     
##                     Max.   : -71.06   Max.   :46.88                     
##                     NA's   :613       NA's   :613                       
##    cmte_nm           cmte_dsgn         contb_receipt_dt_day
##  Length:548396      Length:548396      Min.   : 1.00       
##  Class :character   Class :character   1st Qu.: 8.00       
##  Mode  :character   Mode  :character   Median :16.00       
##                                        Mean   :16.36       
##                                        3rd Qu.:25.00       
##                                        Max.   :31.00       
##                                                            
##  contb_receipt_dt_month contb_receipt_dt_year contb_receipt_date  
##  OCT    : 68920         Min.   :13.00         Min.   :2013-10-21  
##  JUL    : 57732         1st Qu.:16.00         1st Qu.:2016-02-06  
##  MAR    : 56585         Median :16.00         Median :2016-04-29  
##  SEP    : 52847         Mean   :15.81         Mean   :2016-04-27  
##  APR    : 50183         3rd Qu.:16.00         3rd Qu.:2016-08-12  
##  AUG    : 49827         Max.   :16.00         Max.   :2016-12-31  
##  (Other):212302

Este dataset do estado do Texas contem 548.396 observações com 28 variaveis. O dataset original (sem tratamento) contém 18 variáveis.

Seção de Gráficos Univariados

Nesta primeira analise tentei identificar o período em que as contribuições ocorreram com mais frequencia.

##         Min.      1st Qu.       Median         Mean      3rd Qu. 
## "2013-10-21" "2016-02-06" "2016-04-29" "2016-04-27" "2016-08-12" 
##         Max. 
## "2016-12-31"
## Warning: Removed 2 rows containing missing values (geom_path).

## Warning: Removed 101367 rows containing non-finite values (stat_bin).
## Warning: Removed 3 rows containing missing values (geom_path).

## Warning: Ignoring unknown parameters: binwidth, bins, pad

## Warning: Ignoring unknown parameters: binwidth, bins, pad

Quando gerei o primeiro gráfico com a distribuição dos valores, percebi uma contagem muito grande para as ocorrencias de menor valor (mais de 350.00). Reduzi então o binwidth em 10x para que as barras contivessem menos valores na mesma faixa uma vez que para valores baixos temos uma gama de valores muito grande. Depois reduzi o limite do eixo x com o objetivo de ter uma maior visibilidade das distribuições.

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       0      25      40     175     100   16600
## 95% 
## 700

## Warning: Removed 27359 rows containing non-finite values (stat_bin).

## Warning: Transformation introduced infinite values in continuous x-axis
## Warning: Removed 24 rows containing non-finite values (stat_bin).

USACampaign.by_city <- USACampaign %>%
                      group_by(city) %>%
                      summarise(count = n()) %>%
                      arrange(desc(count))

head(USACampaign.by_city, 25)
## # A tibble: 25 x 2
##           city count
##          <chr> <int>
##  1     HOUSTON 71300
##  2      AUSTIN 57750
##  3      DALLAS 41119
##  4 SAN ANTONIO 30240
##  5  FORT WORTH 16308
##  6      SPRING 12169
##  7       PLANO  9603
##  8     EL PASO  7764
##  9   ARLINGTON  7324
## 10        KATY  6063
## # ... with 15 more rows
top10_city <- head(USACampaign.by_city, 25)$city

# Ordena as cidades com base na quantidade de contribuições
USACampaign$city_ordered <- factor(USACampaign$city, USACampaign.by_city$city)

# Distribuição das contribuições entre as cidades com mais contribuições
ggplot(aes(x=city_ordered), 
       data = subset(USACampaign, city %in% top10_city))+
  geom_bar(stat = 'count')+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

## geom_path: Each group consists of only one observation. Do you need to
## adjust the group aesthetic?

Análise Univariada

Qual é a estrutura do conjunto de dados?

O conjunto de dados possui 649443 registros de contribuições para o estado de NY, com 18 atributos cada.

Quais são os principais atributos de interesse deste conjunto de dados?

Os principais atributos deste conjunto de dados são os candidatos (cand_nm) e os valores das contribuições (contb_receipt_amt).

Quais outros atributos você acha que podem lhe auxiliar na investigação destes atributos de interesse?

Você criou novas variáveis a partir dos atributos existentes no conjunto de dados?

Sim. Foram criados variaveis com os componentes da data de contribuição (dia, mês e ano) e incorporados dados do dataset de CEP (zipcode): cidade, longitude e latitude.

Dos atributos investigados, distribuições incomuns foram encontradas? Você aplicou operações nos dados para limpá-los, ajustá-los ou mudar a forma dos dados? Se sim, por quê?

Foram realizados tratamentos nos valores de contribuição. Para os valores negativos, foi considerado o valor absoluto. As contribuições zeradas foram eliminadas.

As datas de contribuição carregadas originalmente como caracter, foram convertidas para Date.

Conforme apresentado na seção de tratamento de dados, fiz uma ajuste nos nomes das cidades para eleminar as cidades iguais registradas com grafias diferentes.

Seção de Gráficos Bivariados

Aqui fiz uma analise das distriuição dos valores ao longo do tempo. No primeiro gráfico foi feita uma analise mais ampla por todo o período compreendido no dataset. No segundo reduzi o faixa de valores para o ano de 2016 e foi considerada as contribuições realizadas dentro de 99% da amostragem.

## Warning: Removed 101756 rows containing missing values (geom_point).

Nesta analise podemos perceber a presença de faixas horizontais bem definidas para os valores doados com mais frequncias. Estes normalmente ão valores redodndos. Uma faixa bem definida é a 2700 dolares. Talvez houvesse uma opção explicita neste valor, ou fosse um teto de contribuição.

Estas mesmas faixas podem ser percebidas quando analisamos a os valores de contribuição por candidato, como visto abaixo.

## Warning: Removed 1782 rows containing missing values (geom_point).

## Warning: Removed 7326 rows containing missing values (geom_point).

Análise Bivariada

Discuta sobre alguns dos relacionamentos observados nesta parte da investigação. Como os atributos de interesse variaram no conjunto de dados?

Você observou algum relacionamento interessante entre os outros atributos (os que não são de interesse)?

Qual foi o relacionamento mais forte encontrado?

Seção de Gráficos Multivariados

## Warning: Removed 613 rows containing missing values (geom_point).

Análise Multivariada

Discuta sobre os relacionamentos observados nesta parte da investigação. Quais atributos que fortaleceram os demais na observação das variáveis de interesse?

Interações surpreendentes e/ou interessantes foram encontradas entre os atributos?

OPCIONAL: Modelos foram criados usando este conjunto de dados? Discuta sobre os pontos fortes e as limitações do seu modelo.


Gráficos Finais e Sumário

Primeiro Gráfico

Descrição do Primeiro Gráfico

Segundo Gráfico

Descrição do Segundo Gráfico

Terceiro Gráfico

Descrição do Terceiro Gráfico


Reflexão